Virtual Hosts - Web Sites
Os Virtual Hosts são elementos dentro do sistema web da
Cloud-Bricks,
que ajuda a conectar as solicitações da Web recebidas pela nuvem com
servidores HTTP que irão atender a essas solicitações. O Host
Virtual decide para qual servidor rotear solicitações com base no
domínio do site que está sendo solicitado.
Componentes Básicos de um Virtual Host
Para entender como funciona e como configurar um Virtual Host,
vários conceitos relacionados precisam ser aprendidos.
Domínios
Nomes de domínio são os nomes usados pela Internet para identificar
redes e organizações. Por exemplo, cloud-bricks.net ou google.com
Web sites that configure can be associated with one or more domains.
Protocolo HTTP/HTTPS
HTTP
é o protocolo de comunicação que permite navegadores "conversarem"
com os servidores web para trocarem informações. HTTPS adiciona
uma camada de segurança a comunicação, habilitando encriptação de
dados usando TLS/SSL.
Para configurar um Virtual Host com HTTPS, você deve primeiro configurar um certificado
digital.
Localizações
Localizações são elementos que permitem separar um site em áreas ou
pastas diferentes cada um com configurações independentes.
Você pode configurar restrições de acesso para essas localizações,
indicar qual servidor HTTP deve gerenciar conteúdo, gerar e
controlar os redirecionamentos de cache.
As localizações podem restringir o acesso usando endereços IP
configurados na lista de firewall - máquinas e
redes.
As localizações permitem que você ative e configure um mecanismo de Web Cache
As licalizações também gerenciam o destino do pedido, portanto, é
possível direcionar solicitações de um domínio para um servidor
HTTP específico, ou redirecionar para um URL externo. Quando você
configura um redirecionamento, o campo de destino aparece: coloque
aqui o url onde queremos redirecionar o usuário.
Configuração de Cache em Localizações
Quando estiver dentro de um Local, o cache HTTP é ativado, temos
duas opções de acordo com os cabeçalhos de cache que possuem o
aplicativo. Veja mais informações
sobre o sistema de cache.
- Cache Expirado: Se o proxy reverso tiver na memória uma
cópia já expirada de uma página (ou seja, seu tempo de cache
expirou) e por algum motivo não for possível obter uma cópia
atualizada (Exemplo: o servidor da Web está off-line), então
autorizamos o proxy a entregar uma "cópia antiga" do site /
página para cada pedido. Desta forma, podemos entregar uma cópia
antiga em vez de falhar, entregar nada ou gerar um erro.
- Cache sem Cookie: Essa opção é especialmente útil
quando o site usa um sistema de autenticação e, por meio de um
cookie específico, indica que o conteúdo gerado durante a sessão
não deve ser armazenado no cache. Ao activar esta opção, o campo
aparece para introduzir o nome do cookie.
Redirecionar HTTP
O redirecionamento HTTP é uma opção para enviar o trafego para
sites externos. O redirecionamento pode ser útil, por exemplo, se
tivermos uma manutenção do site e todo o tráfego for redirecionado
para um site diferente. Redirecionamento está no campo "Destino"
nas localizações. Você pode escolher entre dois tipos de
redirecionamento:
- Redirecionamento 301 (Permanente): Esse redirecionamento
indica que o host foi capaz de se comunicar com o servidor, mas
o arquivo solicitado foi movido para outro endereço
permanentemente.
- Redirecionamento 302 (Temporário): Esse redirecionamento
indica que o host foi capaz de se comunicar com o servidor, mas
o arquivo solicitado foi movido temporariamente para outro
endereço.
Configurar um novo Virtual Host
Vá para
Sistema Web
-> Virtual Hosts no menu esquerdo.
Para que um website fique visível na Internet é necessário criar um
virtual host e configurar os domínios associados a ele.
- Nome do virtual host, não podem haver dois nomes iguais.
- Protocolos do Website.
- HTTP: Procolo comum para websites, sem segurança.
- HTTPS: Protocolo web seguro, utiliza camada de segurança
SSL. Para maiores informações veja a sessão Certificados SSL.
- HTTP & HTTPS: Você pode habilitar o acesso ao seu site
usando conexões seguras (HTTPS) ou inseguras (HTTP).
- Adicionar
Domínios: Você pode configurar multiplos domínios virtuais em um
único host.
- Nome do Domínio: Aqui você pode adicionar todos os domínios
que foram comprados e estão apontando para a Cloud.
Nós podemos colocar um nome de domínio padrão do sistema no
formato virtualMachineName.NomeDoCliente.vnat.net.
- Domains delete button: Delete domains that have been
added.
- Adicionar Localização: Permite adicionar multiplas
localizações com configurações independentes.
- URI : Um URL é simplesmente um URI que aponta para um
recurso físico através de uma rede.
Para este exemplo vamos usar a raíz do site "/".
- Restrição de Acesso: Você pode permitir o acesso de uma única
rede na sessão Firewall
- Máquinas e Redes.
Para este exemplo vamos dar acesso a qualquer máquina da
Internet com a opção QUALQUER.
- Virtualhost destino: É a localização do destino do tráfego.
Ele pode ser um Redicionamento 301 ou 302, ou um servidor HTTP.
Para mais informações vá para a sessão Servidores HTTP.
Para este exemplo vamos utilizar o servidor HTTP previamente
configurado chamado WORDPRESS.
- Opção para habilitar o cache HTTP da Cloud-Bricks. Para este
exemplo iremos deixar desmarcado.
- Botão Deletar Localização: Você pode deltar as localizações
criadas. Esta ação é irreversível.
- OK: Quato clicado, a lista de Virtual Hosts será
atualizada.
- Cancelar:
Cancela a operação.
Clique em OK e então em Aplicar
Alterações para salvar as alterações realizadas. Agora
você pode acessar o site usando qualquer um dos domínios
configurados.
Acesso Restrido a Diretórios
Por razões de segurança, muitas vezes é necessário restringir o
acesso a um diretório ou URL do portal. Por exemplo, quando você
está criando uma nova seção de um portal que está no URI /
esportes, podemos restringir o acesso a apenas os desenvolvedores
podem participar. Em seguida, um exemplo.
O portal da web criado responde para no endereço http://wordpress.pruebas.vnat.net/
Agora, vá para
http://wordpress.pruebas.vnat.net/wordpress/,
uma instalação do Wordpress será exibida.
Agora altere o Virtual Host correspondente para acesso restrito a
URL
http://wordpress.pruebas.vnat.net/wordpress/.
No campo "Permitir" escolha a rede que terá acesso exclusivo a URI
/wordpress,
para este caso escolhemos a rede GOOGLE_DNS_IPV4. Ao digitar
novamente a URL
http://wordpress.pruebas.vnat.net/wordpress/
o acesso está restrito.
Vá novamente para a URL
http://wordpress.pruebas.vnat.net/
e veja que ela permanece acessível normalmente.
Redirecionamentos
O redirecionamento é útil para controlar o acesso ao
desenvolvimento de portais ou à opção de manutenção. Você pode
redirecionar o tráfego para sites ou servidores externos. Para
adicionar um redirecionamento para um portal é necessário
modificar o virtual host configurado. Por exemplo ao entrar no
portal http://wordpress.pruebas.vnat.net/google
é apresentada a mensagem erro 404.
Agora altere o Virtual Host correspondente para incluir um
redirecionamento para o portal www.google.com
Ao entrar no portal
http://wordpress.pruebas.vnat.net/google
será redirecionado para http://www.google.com
Um site distribuído entre vários servidores HTTP
Você pode fazer diferentes partes do mesmo site serem servidos por
diferentes servidores HTTP.
Como um exemplo, suponha que queremos em nosso site, o URI /suporte
ser disponibilizado por um servidor HTTP específico.
Se temos uma máquina virtual como servidor de suporte (sistema de
chamados), você deve criar um
servidor
HTTP apontando para a porta e IP da máquina.
Atualize a lista e aplique as alterações. Alterando o Virtual Host,
agora você pode editar os locais e adicionar uma nova URI, alterando
a opção "Destino" para apontar para o servidor HTTP que você acabou
de criar.
Desta forma, é possível criar e distribuir os locais entre os
diferentes servidores.
Criar regras de rewrite e return
Na versão mais recente do sistema Cloud-Bricks, é possível usar
o
motor
de regras do NGINX para criar regras de return e rewrite e
poder controlar o comportamento dos seus web sites em situações
especiais.
É necessário conhecer as
Expressões
regulares para configurar este tipo de regras. A sintaxes do
Perl é utilizada, porém não são necessárias as aspas (" , ') nem
barras/slashes (/) para delimitar as expressões.
Por favor consultar a
documentação
do NGINX para mais informações dos casos de uso para esta
ferramenta.
- Use este ícone para adicionar novas regras.
- Use este ícone para adicionar condições adicionais numa regra.
- Menu de operadores de comparação: Selecione o operador
para comparar a variável da esquerda com a expressão regular da
direita.
- = : Equals. Verifica si o
valor da variável é igual ao texto da direita.
- ~ : Match. Verifica se o valor da
variável faz "match" com a expressão regular da direita
(Sensível a maiúsculas/minúsculas)
- ~* : iMatch. Verifica se o valor da
variável faz "match" com a expressão regular da direita
(Sensível a maiúsculas/minúsculas)
- != , !~ , !~* : Versões negativas dos operadores
anteriores.
- Use este ícone para apagar uma regra.
- Menu de variáveis: Oferece uma lista das variáveis
disponíveis para criar condições. É um subconjunto da lista de
variáveis do NGINX.
- host: Indica o nome de host utilizado na requisição
HTTP.
- http_cookie: Contem as cookies enviadas pelo cliente.
- http_user_agent: Identifica o tipo de cliente usado
na conexão.
- https: Contem o valor "on" se a conexão é
segura. Se não é vazio.
- is_mobile: Contem o valor "1" se o cliente é um
dispositivo celular ou tablet Se não 0.
- is_bot: Contem o valor "1" se o cliente é um bot ou
cliente não interativo. Se não 0.
- is_desktop: Contem o valor "1" se o cliente usa um
sistema operacional tipo Desktop. Se não 0.
- query_string: Contem o texto depois do "?" num URL.
- request: Linha completa original da requisição.
- request_method: Método HTTP usado na requisição
("GET", "POST", "HEAD" , etc)
- request uri: URI original completa (com
parâmetros).
- remote_addr: Endereço IP do cliente ou proxy
que fez a requisição.
- remote_port: Porta IP de origem utilizada pelo
cliente ou proxy para fazer a requisição.
- scheme: Protocolo da requisição “
http
”
ou “https
”
- Use este ícone para apagar condições de uma regra.
- Para regras
de rewrite, são necessárias duas expressões regulares:
- Expressão regular "Match": Indica o formato que o URI deve
ter para aplicar a regra.
- Expressão regular de troca. Indica o formato para alterar o
URI se o match for validado.
- Use este campo para escrever as expressões regulares usadas
para comparar as variáveis (5) com os operadores (3).
- Menu de acões: Aqui pode selecionar o tipo de ação que
será executada se todas as condições forem verdadeiras.
- return: Responder à solicitação com um código
HTTP.
- rewrite_i: Redirecionamento interno. Usar expressões
regulares para alterar o URI internamente sem enviar nenhuma
resposta de redirect ao cliente. O URI será alterado antes de
ser enviado para o servidor web da máquina virtual
correspondente.
- rewrite_t : Usar expressões regulares para alterar o
URI atual enviando um código HTTP 302 para o cliente.
- rewrite_p: Usar expressões regulares para alterar o
URI atual enviando um código HTTP 301 para o cliente.
- Campos para enviar códigos de resposta HTTP em regras return.
- Para códigos 3XX (redirecionamentos) é necessário
providenciar um URL absoluto como destino.
- O código especial não padrão 444 é usado para encerrar a
conexão atual sem enviar nenhuma resposta ao cliente.
- Todos os outros códigos podem enviar um texto adicional como
resposta ao cliente.
Por favor não hesite em contactar
o
nosso time de suporte se precisar de ajuda na
configuração de estas regras.